package cn.afterturn.easypdf.util;

import java.util.HashMap;
import java.util.Map;

/**
 * 康熙字段偏旁替换
 */
public class KangXiDictUtil {

    static Map<String, String> map = new HashMap() {{
        put("巿", "市");
        // -- 康熙字段偏旁
        put("⼀", "一");
        put("⼁", "丨");
        put("⼂", "丶");
        put("⼃", "丿");
        put("⼄", "乙");
        put("⼅", "亅");
        put("⼆", "二");
        put("⼇", "亠");
        put("⼈", "人");
        put("⼉", "儿");
        put("⼊", "入");
        put("⼋", "八");
        put("⼌", "冂");
        put("⼍", "冖");
        put("⼎", "冫");
        put("⼏", "几");
        put("⼐", "凵");
        put("⼑", "刀");
        put("⼒", "力");
        put("⼓", "勹");
        put("⼔", "匕");
        put("⼕", "匚");
        put("⼖", "匸");
        put("⼗", "十");
        put("⼘", "卜");
        put("⼙", "卩");
        put("⼚", "厂");
        put("⼛", "厶");
        put("⼜", "又");
        put("⼝", "口");
        put("⼞", "口");
        put("囗", "口");
        put("⼟", "土");
        put("⼠", "士");
        put("⼡", "夂");
        put("⼢", "夊");
        put("⼣", "夕");
        put("⼤", "大");
        put("⼥", "女");
        put("⼦", "子");
        put("⼧", "宀");
        put("⼨", "寸");
        put("⼩", "小");
        put("⼪", "尢");
        put("⼫", "尸");
        put("⼬", "屮");
        put("⼭", "山");
        put("⼮", "巛");
        put("⼯", "工");
        put("⼰", "己");
        put("⼱", "巾");
        put("⼲", "干");
        put("⼳", "幺");
        put("⼴", "广");
        put("⼵", "廴");
        put("⼶", "廾");
        put("⼷", "弋");
        put("⼸", "弓");
        put("⼹", "彐");
        put("⼺", "彡");
        put("⼻", "彳");
        put("⼼", "心");
        put("⼽", "戈");
        put("⼾", "户");
        put("戶", "户");
        put("⼿", "手");
        put("⽀", "支");
        put("⽁", "攴");
        put("⽂", "文");
        put("⽃", "斗");
        put("⽄", "斤");
        put("⽅", "方");
        put("⽆", "无");
        put("⽇", "日");
        put("⽈", "曰");
        put("⽉", "月");
        put("⽊", "木");
        put("⽋", "欠");
        put("⽌", "止");
        put("⽍", "歹");
        put("⽎", "殳");
        put("⽏", "毋");
        put("⽐", "比");
        put("⽑", "毛");
        put("⽒", "氏");
        put("⽓", "气");
        put("⽔", "水");
        put("⽕", "火");
        put("⽖", "爪");
        put("⽗", "父");
        put("⽘", "爻");
        put("⽙", "爿");
        put("⽚", "片");
        put("⽛", "牙");
        put("⽜", "牛");
        put("⽝", "犬");
        put("⽞", "玄");
        put("⽟", "玉");
        put("⽠", "瓜");
        put("⽡", "瓦");
        put("⽢", "甘");
        put("⽣", "生");
        put("⽤", "用");
        put("⽥", "田");
        put("⽦", "疋");
        put("⽧", "疒");
        put("⽨", "癶");
        put("⽩", "白");
        put("⽪", "皮");
        put("⽫", "皿");
        put("⽬", "目");
        put("⽭", "矛");
        put("⽮", "矢");
        put("⽯", "石");
        put("⽰", "示");
        put("⽱", "禸");
        put("⽲", "禾");
        put("⽳", "穴");
        put("⽴", "立");
        put("⽵", "竹");
        put("⽶", "米");
        put("⽷", "糸");
        put("⽸", "缶");
        put("⽹", "网");
        put("⽺", "羊");
        put("⽻", "羽");
        put("⽼", "老");
        put("⽽", "而");
        put("⽾", "耒");
        put("⽿", "耳");
        put("⾀", "聿");
        put("⾁", "肉");
        put("⾂", "臣");
        put("⾃", "自");
        put("⾄", "至");
        put("⾅", "臼");
        put("⾆", "舌");
        put("⾇", "舛");
        put("⾈", "舟");
        put("⾉", "艮");
        put("⾊", "色");
        put("⾋", "艸");
        put("⾌", "虍");
        put("⾍", "虫");
        put("⾎", "血");
        put("⾏", "行");
        put("⾐", "衣");
        put("⾑", "襾");
        put("⾒", "见");
        put("⾓", "角");
        put("⾔", "言");
        put("⾕", "谷");
        put("⾖", "豆");
        put("⾗", "豕");
        put("⾘", "豸");
        put("⾙", "贝");
        put("⾚", "赤");
        put("⾛", "走");
        put("⾜", "足");
        put("⾝", "身");
        put("⾞", "车");
        put("⾟", "辛");
        put("⾠", "辰");
        put("⾡", "辵");
        put("⾢", "邑");
        put("⾣", "酉");
        put("⾤", "采");
        put("⾥", "里");
        put("⾦", "金");
        put("⾧", "长");
        put("⾨", "门");
        put("⾩", "阜");
        put("⾪", "隶");
        put("⾫", "隹");
        put("⾬", "雨");
        put("⾭", "青");
        put("⾮", "非");
        put("⾯", "面");
        put("⾰", "革");
        put("⾱", "韦");
        put("⾲", "韭");
        put("⾳", "音");
        put("⾴", "页");
        put("⾵", "风");
        put("⾶", "飞");
        put("⾷", "食");
        put("⾸", "首");
        put("⾹", "香");
        put("⾺", "马");
        put("⾻", "骨");
        put("⾼", "高");
        put("⾽", "髟");
        put("⾾", "鬥");
        put("⾿", "鬯");
        put("⿀", "鬲");
        put("⿁", "鬼");
        put("⿂", "鱼");
        put("⿃", "鸟");
        put("⿄", "卤");
        put("⿅", "鹿");
        put("⿆", "麦");
        put("⿇", "麻");
        put("⿈", "黄");
        put("⿉", "黍");
        put("⿊", "黑");
        put("⿋", "黹");
        put("⿌", "黾");
        put("⿍", "鼎");
        put("⿎", "鼓");
        put("⿏", "鼠");
        put("⿐", "鼻");
        put("⿑", "齐");
        put("⿒", "齿");
        put("⿓", "龙");
        put("⿔", "龟");
        put("⿕", "仑");
        // --- 简体字偏旁优化
        put("⺁", "厂");
        put("⺂", "乛");
        put("⺃", "乚");
        put("⺄", "乙");
        put("⺆", "冂");
        put("⺇", "几");
        put("⺈", "刀");
        put("⺉", "刂");
        put("⺊", "卜");
        put("⺋", "㔾");
        put("⺌", "小");
        put("⺍", "小");
        put("⺎", "兀");
        put("⺏", "尣");
        put("⺐", "尢");
        put("⺑", "尣");
        put("⺒", "巳");
        put("⺓", "幺");
        put("⺔", "彑");
        put("⺕", "彐");
        put("⺖", "忄");
        put("⺗", "心");
        put("⺘", "扌");
        put("⺙", "攵");
        put("⺛", "旡");
        put("⺜", "日");
        put("⺝", "月");
        put("⺞", "歺");
        put("⺟", "母");
        put("⺠", "民");
        put("⺡", "氵");
        put("⺢", "氺");
        put("⺣", "灬");
        put("⺤", "爫");
        put("⺥", "爫");
        put("⺦", "丬");
        put("⺧", "牛");
        put("⺨", "犭");
        put("⺩", "王");
        put("⺪", "疋");
        put("⺫", "目");
        put("⺬", "示");
        put("⺭", "礻");
        put("⺮", "竹");
        put("⺯", "糹");
        put("⺰", "纟");
        put("⺱", "罓");
        put("⺲", "罒");
        put("⺳", "网");
        put("⺴", "网");
        put("⺶", "羊");
        put("⺷", "羊");
        put("⺸", "羋");
        put("⺹", "耂");
        put("⺺", "聿");
        put("⺻", "聿");
        put("⺼", "肉");
        put("⺽", "臼");
        put("⺾", "艹");
        put("⺿", "艹");
        put("⻀", "艹");
        put("⻁", "虎");
        put("⻂", "衤");
        put("⻃", "覀");
        put("⻄", "西");
        put("⻅", "见");
        put("⻆", "角");
        put("⻇", "肉");
        put("⻈", "讠");
        put("⻉", "贝");
        put("⻊", "足");
        put("⻋", "车");
        put("⻌", "辶");
        put("⻍", "辶");
        put("⻎", "辶");
        put("⻏", "邑");
        put("⻐", "钅");
        put("⻑", "長");
        put("⻒", "镸");
        put("⻓", "长");
        put("⻔", "门");
        put("⻕", "阜");
        put("⻖", "阝");
        put("⻗", "雨");
        put("⻘", "青");
        put("⻙", "韦");
        put("⻚", "页");
        put("⻛", "风");
        put("⻜", "飞");
        put("⻝", "食");
        put("⻞", "食");
        put("⻟", "食");
        put("⻠", "饣");
        put("⻡", "");
        put("⻢", "马");
        put("⻣", "骨");
        put("⻤", "鬼");
        put("⻥", "鱼");
        put("⻦", "鸟");
        put("⻧", "卤");
        put("⻨", "麦");
        put("⻩", "黄");
        put("⻪", "黾");
        put("⻫", "斉");
        put("⻬", "齐");
        put("⻭", "歯");
        put("⻮", "齿");
        put("⻯", "竜");
        put("⻰", "龙");
        put("⻱", "龜");
        put("⻲", "亀");
        put("⻳", "龟");
    }};

    /**
     * 不理解为啥PDF出来的就是这个名字
     *
     * @param name
     * @return
     */
    public static String convertWord(String name) {
        char[] chars = name.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            String key = new String(chars, i, 1);
            if (map.containsKey(key)) {
                chars[i] = map.get(key).toCharArray()[0];
            }
        }
        return new String(chars);
    }

    public static void main(String[] args) {
        System.out.println("马凤".equals("⻢凤") + "");

        // 输出下 汉字编码,对照一下
        String key = "巿";
        char ch = key.charAt(0);
        int unicode = ch;
        char var = key.charAt(0);
        int varUnicode = map.get(key).charAt(0);
        System.out.println("部首的编码: " + key + ", " + Integer.toHexString(unicode).toUpperCase() + ", 汉字的编码: " + Integer.toHexString(varUnicode).toUpperCase());
    }
}
